#include "Atlas/atlas.h"

/********************************************
 *              Public
 ********************************************/

    /********************************************
     *              Constructors
     ********************************************/

        Atlas::Atlas(){
        }

        Atlas::Atlas(int width, int height){
            m_Width     =   width;
            m_Height    =   height;

            m_Scene     =   new QGraphicsScene();
            m_Item      =   new ComponentItem("Atlas", this);
        }

    /********************************************
     *              Methods
     ********************************************/

        /********************************************
         *              Virtual
         ********************************************/

            void Atlas::Save(xml::Element &element){

            }

            void Atlas::Load(xml::Element &element){

            }

/********************************************
 *              Private
 ********************************************/

    /********************************************
     *              Methods
     ********************************************/

        void Atlas::DoubleClicked(){
            emit SendCanvas(this);
        }

        void Atlas::ExportTexture()
        {
            // Je commence par créer l'image finale

            QImage  *   image   =   new QImage( m_Scene->width(), m_Scene->height(),QImage::Format_RGB32);

            for(int i=0; i< m_Images.size(); i++){
                for(int j=0; j< m_Images[i]->Height(); j++){
                    for(int k=0; k< m_Images[i]->Width(); k++){
                        image->setPixel( m_Images[i]->OffsetX() + k,
                                         m_Images[i]->OffsetY() + j,
                                         m_Images[i]->GetPixel(k,j)
                                         );
                    }
                }
            }

            image->save("test.png","PNG");
        }


        void Atlas::ExportXML(){

        }

        void Atlas::AddImage(QString filepath){
            // Dans un premier temps, je charge l'image à partir du chemin passé en paramètre
            QImage*     image       = new QImage(filepath);

            // Je crée un nouveau Widget de type AtlasImage
            AtlasImage * atlasImage = new AtlasImage(image, filepath);

            // Je rajoute l'image dans la liste des images
            m_Images.push_back(atlasImage);

            m_Scene->addItem((QGraphicsItem *)atlasImage);
        }

        int Atlas::Width(){
            return m_Width;
        }

        int Atlas::Height(){
            return m_Height;
        }

        void Atlas::Clicked(){
            emit SendInspector(new AtlasInspector(this));
        }
